package com.settlement.system.model.entity.common;

import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.HeadFontStyle;
import com.alibaba.excel.annotation.write.style.HeadRowHeight;
import com.alibaba.excel.annotation.write.style.HeadStyle;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModelProperty;
import jakarta.validation.constraints.NotNull;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

/**
 * 优购-银联账单明细
 * @author Ximi
 * @since 2020-07-07
 */
@Data
@ExcelIgnoreUnannotated
@HeadStyle(fillBackgroundColor = 9,fillForegroundColor = 9)
@HeadRowHeight(value = 20)
@HeadFontStyle(fontHeightInPoints = 14)
public class TblYgUnionpayBillDetail extends BaseModel implements Serializable {


    /**
     * 交易代码
     */
    @ExcelProperty(value = "交易代码")
    @ApiModelProperty(value = "交易代码")
    private String exchangeCode;

    /**
     * 代理机构标识码
     */
    @ExcelProperty(value = "代理机构标识码")
    @ApiModelProperty(value = "代理机构标识码")
    private String proxyOrganMarkCode;

    /**
     * 发送机构标识码
     */
    @ExcelProperty(value = "发送机构标识码")
    @ApiModelProperty(value = "发送机构标识码")
    private String sendOrganMarkCode;

    /**
     * 系统跟踪号
     */
    @ExcelProperty(value = "系统跟踪号")
    @ApiModelProperty(value = "系统跟踪号")
    private String systemTrackNo;

    /**
     * 交易传输时间
     */
    @ExcelProperty(value = "交易传输时间")
    @ApiModelProperty(value = "交易传输时间",required = true)
    @JsonFormat(pattern="yyyy/MM/dd HH:mm:ss",timezone = "GMT+8")
    @NotNull(message = "交易传输时间不能为空")
    private Date exchangeTransportDate;

    /**
     * 帐号
     */
    @ExcelProperty(value = "帐号")
    @ApiModelProperty(value = "帐号")
    private String account;

    /**
     * 下载帐号
     */
    @ExcelProperty(value = "下载帐号")
    @ApiModelProperty(value = "下载帐号")
    private String downloadAccount;

    /**
     * 原始交易日期时间
     */
    @ExcelProperty(value = "银联账单日期")
    @ApiModelProperty(value = "银联账单日期")
    @JsonFormat(pattern="yyyy-MM-dd",timezone = "GMT+8")
    private Date unionBillDate;

    /**
     * 交易金额
     */
    @ExcelProperty(value = "交易金额")
    @ApiModelProperty(value = "交易金额")
    private BigDecimal exchangeAmount;

    /**
     * 商户类别
     */
    @ExcelProperty(value = "商户类别")
    @ApiModelProperty(value = "商户类别")
    private String merchantType;

    /**
     * 终端类型
     */
    @ExcelProperty(value = "终端类型")
    @ApiModelProperty(value = "终端类型")
    private String terminalType;

    /**
     * 查询流水号
     */
    @ExcelProperty(value = "查询流水号")
    @ApiModelProperty(value = "查询流水号")
    private String serialNo;

    /**
     * 支付方式（旧）
     */
    @ExcelProperty(value = "支付方式（旧）")
    @ApiModelProperty(value = "支付方式（旧）")
    private String oldPaymentWay;

    /**
     * 商户订单号
     */
    @ExcelProperty(value = "商户订单号")
    @ApiModelProperty(value = "商户订单号")
    private String merchantOrderNo;

    /**
     * 支付卡类型
     */
    @ExcelProperty(value = "支付卡类型")
    @ApiModelProperty(value = "支付卡类型")
    private String paymentCardType;

    /**
     * 原始交易的系统跟踪号
     */
    @ExcelProperty(value = "原始交易的系统跟踪号")
    @ApiModelProperty(value = "原始交易的系统跟踪号")
    private String originSysytemTrackNo;

    /**
     * 原始交易日期时间
     */
    @ExcelProperty(value = "原始交易日期时间")
    @ApiModelProperty(value = "原始交易日期时间",required = true)
    @JsonFormat(pattern="yyyy/MM/dd HH:mm:ss",timezone = "GMT+8")
    private Date originExchangeDate;

    /**
     * 商户手续费
     */
    @ExcelProperty(value = "商户手续费")
    @ApiModelProperty(value = "商户手续费")
    private BigDecimal merchantServiceAmount;

    /**
     * 结算金额
     */
    @ExcelProperty(value = "结算金额")
    @ApiModelProperty(value = "结算金额")
    private BigDecimal settleAmount;

    /**
     * 支付方式
     */
    @ExcelProperty(value = "支付方式")
    @ApiModelProperty(value = "支付方式")
    private String paymentWay;

    /**
     * 集团商户代码
     */
    @ExcelProperty(value = "集团商户代码")
    @ApiModelProperty(value = "集团商户代码")
    private String groupMerchantCode;

    /**
     * 交易类型
     */
    @ExcelProperty(value = "交易类型")
    @ApiModelProperty(value = "交易类型")
    private String exchangeType;

    /**
     * 交易子类
     */
    @ExcelProperty(value = "交易子类")
    @ApiModelProperty(value = "交易子类")
    private String exchangeChildType;

    /**
     * 业务类型
     */
    @ExcelProperty(value = "业务类型")
    @ApiModelProperty(value = "业务类型")
    private String businessType;

    /**
     * 帐号类型
     */
    @ExcelProperty(value = "帐号类型")
    @ApiModelProperty(value = "帐号类型")
    private String accountType;

    /**
     * 账单类型
     */
    @ExcelProperty(value = "账单类型")
    @ApiModelProperty(value = "账单类型")
    private String billType;

    /**
     * 账单号码
     */
    @ExcelProperty(value = "账单号码")
    @ApiModelProperty(value = "账单号码")
    private String billNumber;

    /**
     * 交互方式
     */
    @ExcelProperty(value = "交互方式")
    @ApiModelProperty(value = "交互方式")
    private String exchangeWay;

    /**
     * 原交易查询流水号
     */
    @ExcelProperty(value = "原交易查询流水号")
    @ApiModelProperty(value = "原交易查询流水号")
    private String originSerialNo;

    /**
     * 商户代码
     */
    @ExcelProperty(value = "商户代码")
    @ApiModelProperty(value = "商户代码")
    private String merchantCode;

    /**
     * 分账入账方式
     */
    @ExcelProperty(value = "分账入账方式")
    @ApiModelProperty(value = "分账入账方式")
    private String entryWay;

    /**
     * 二级商户代码
     */
    @ExcelProperty(value = "二级商户代码")
    @ApiModelProperty(value = "二级商户代码")
    private String secondMerchantCode;

    /**
     * 二级商户简称
     */
    @ExcelProperty(value = "二级商户简称")
    @ApiModelProperty(value = "二级商户简称")
    private String secondMerchantShortName;

    /**
     * 二级商户分账入账金额
     */
    @ExcelProperty(value = "二级商户分账入账金额")
    @ApiModelProperty(value = "二级商户分账入账金额")
    private BigDecimal secondEntryAccountAmount;

    /**
     * 清算净额
     */
    @ExcelProperty(value = "清算净额")
    @ApiModelProperty(value = "清算净额")
    private BigDecimal cleaningNetAmount;

    /**
     * 终端号
     */
    @ExcelProperty(value = "终端号")
    @ApiModelProperty(value = "终端号")
    private String terminalNo;

    /**
     * 商户自定义域
     */
    @ExcelProperty(value = "商户自定义域")
    @ApiModelProperty(value = "商户自定义域")
    private String merchantCustomArea;

    /**
     * 优惠金额
     */
    @ExcelProperty(value = "优惠金额")
    @ApiModelProperty(value = "优惠金额")
    private BigDecimal discountAmount;

    /**
     * 发票金额
     */
    @ExcelProperty(value = "发票金额")
    @ApiModelProperty(value = "发票金额")
    private BigDecimal invoiceAmount;

    /**
     * 分期付款附加手续费
     */
    @ExcelProperty(value = "分期付款附加手续费")
    @ApiModelProperty(value = "分期付款附加手续费")
    private BigDecimal installmentServiceAmount;

    /**
     * 分期付款期数
     */
    @ExcelProperty(value = "分期付款期数")
    @ApiModelProperty(value = "分期付款期数")
    private Integer installmentTime;

    /**
     * 交易介质
     */
    @ExcelProperty(value = "交易介质")
    @ApiModelProperty(value = "交易介质")
    private String exchageMedium;

    /**
     * 保留使用
     */
    @ExcelProperty(value = "保留使用")
    @ApiModelProperty(value = "保留使用")
    private String saveUse;

    /**
     * 原始账单ID
     */
    @ExcelProperty(value = "原始账单ID")
    @ApiModelProperty(value = "原始账单ID")
    private String originBillId;

}
